home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / C Internet Config / IC Component Source ƒ / IC Resource ƒ / IC Link In Subs.c next >
Encoding:
Text File  |  1995-12-06  |  11.3 KB  |  195 lines  |  [TEXT/SPM ]

  1. e;
  2.     
  3.     do {
  4.         vref=0;
  5.         err=GetVolInfo(fs->name,&vref,vol_index);
  6.         
  7.         if (err==noErr){
  8.             err=ScanVolume(creator,vref,fs);
  9.             
  10.             if (err==noErr)
  11.                 found=true;
  12.             else 
  13.                 err=noErr;
  14.         }
  15.         
  16.         vol_index++;
  17.         
  18.     } while ((!found)&&(err==noErr));
  19.     
  20.     if (!found){
  21.         err=afpItemNotFound;
  22.         fs->vRefNum=0;
  23.         fs->parID=2;
  24.         fs->name[0]=0;
  25.     }
  26.     
  27.     return err;
  28. }
  29.  
  30. ICError PrepareToLaunch(AppleEvent* theEvent,Boolean tofront,LaunchParamBlockRec* launchThis){
  31.     AEDesc launchDesc;
  32.     OSErr err;
  33.     
  34.     err=AECoerceDesc(theEvent,typeAppParameters,&launchDesc);
  35.     
  36.     HLock((Handle)theEvent->dataHandle);
  37.     
  38.     launchThis->launchAppParameters=(AppParametersPtr)*(theEvent->dataHandle);
  39.     launchThis->launchBlockID=extendedBlock;
  40.     launchThis->launchEPBLength=extendedBlockLen;
  41.     launchThis->launchFileFlags=0;
  42.     launchThis->launchControlFlags=launchContinue | launchNoFileFlags;
  43.     if (!tofront)
  44.         launchThis->launchControlFlags |= launchDontSwitch;
  45.     
  46.     return err;
  47. }
  48.  
  49. ICError CreateGURLEvent(OSType creator,Handle urlh,AppleEvent* theEvent){
  50.     AEDesc targetAddress;
  51.     ICError err,err2;
  52.     SignedByte s;
  53.     
  54.     err=AECreateDesc(typeApplSignature,&creator,sizeof(OSType),&targetAddress);
  55.     err2=AECreateAppleEvent('GURL','GURL',&targetAddress,kAutoGenerateReturnID,kAnyTransactionID,theEvent);
  56.     
  57.     if (err==noErr)
  58.         err=err2;
  59.     
  60.     s=HGetState(urlh);
  61.     HLock(urlh);
  62.     
  63.     err2=AEPutKeyPtr(theEvent,keyDirectObject,typeChar,*urlh,GetHandleSize(urlh));
  64.     HSetState(urlh,s);
  65.     
  66.     if (err==noErr)
  67.         err=err2;
  68.     
  69.     if (err!=noErr){
  70.         AEDisposeDesc(theEvent);
  71.         theEvent=(AppleEvent*)0;
  72.     }
  73.     
  74.     AEDisposeDesc(&targetAddress);
  75.     
  76.     return err;
  77. }
  78.  
  79. ICError CreateEditPrefEvent(OSType creator,StringPtr key,FSSpecPtr prefsfile,AppleEvent* theEvent){
  80.     AEDesc targetAddress;
  81.     ICError err,err2;
  82.     
  83.     err=AECreateDesc(typeApplSignature,&creator,sizeof(OSType),&targetAddress);
  84.     err2=AECreateAppleEvent('ICAp','ICAp',&targetAddress,kAutoGenerateReturnID,kAnyTransactionID,theEvent);
  85.     if (err==noErr)
  86.         err=err2;
  87.     
  88.     err2=AEPutKeyPtr(theEvent,'----','TEXT',&(key[1]),key[0]);
  89.     if (err==noErr)
  90.         err=err2;
  91.     
  92.     err2=AEPutKeyPtr(theEvent,'dest','fss ',prefsfile,sizeof(FSSpec));
  93.     if (err==noErr)
  94.         err=err2;
  95.     
  96.     if (err!=noErr){
  97.         AEDisposeDesc(theEvent);
  98.         theEvent=(AppleEvent*)0;
  99.     }
  100.     
  101.     AEDisposeDesc(&targetAddress);
  102.     
  103.     return err;
  104. }
  105.  
  106. ICError LaunchFSSpec(FSSpecPtr fs,AppleEvent* theEvent){
  107.     LaunchParamBlockRec launchThis;
  108.     AEDesc launchDesc;
  109.     ICError err;
  110.     
  111.     launchThis.launchAppSpec=fs;
  112.     err=PrepareToLaunch(theEvent,true,&launchThis);
  113.     if (err==noErr)
  114.         err=LaunchApplication(&launchThis);
  115.     if (err==memFullErr){
  116.         launchThis.launchControlFlags |= launchUseMinimum;
  117.         err=LaunchApplication(&launchThis);
  118.     }
  119.     
  120.     return err;
  121. }
  122.  
  123. ICError SendEvent(AppleEvent* theEvent,OSType creator){
  124.     ICError err;
  125.     ProcessSerialNumber psn;
  126.     FSSpec app_fs;
  127.     AppleEvent reply;
  128.     
  129.     if (FindProcess(creator,'APPL',&psn,&app_fs)){
  130.         SetFrontProcess(&psn);
  131.         err=AESend(theEvent,&reply,kAENoReply,kAEHighPriority,kNoTimeOut,(AEIdleUPP)0,(AEFilterUPP)0);
  132.     } else {
  133.         err=FindApplication(creator,&app_fs);
  134.         if (err==noErr)
  135.             err=LaunchFSSpec(&app_fs,theEvent);
  136.     }
  137.     
  138.     return err;
  139. }
  140.  
  141. ICError EditPreferences(StringPtr key,FSSpecPtr prefsfile){
  142.     ICError err;
  143.     AppleEvent theEvent;
  144.     
  145.     err=HaveProcessManager();
  146.     if (err==noErr){
  147.         err=CreateEditPrefEvent(kICCreator,key,prefsfile,&theEvent);
  148.         if (err==noErr)
  149.             err=SendEvent(&theEvent,kICCreator);
  150.         
  151.         AEDisposeDesc(&theEvent);
  152.     }
  153.     
  154.     return err;
  155. }
  156.  
  157. ICError FindScheme(Handle urlh,StringPtr scheme){
  158.     ICError err=noErr;
  159.     char tmp=':';
  160.     
  161.     long ndx=Munger(urlh,0,&tmp,1,(Ptr)0,0);
  162.     
  163.     if ((ndx<0)||(ndx>255)){
  164.         err=icNoURLErr;
  165.     }
  166.     
  167.     if (err==noErr){
  168.         scheme[0]=ndx;
  169.         BlockMoveData(*urlh,&(scheme[1]),ndx);
  170.     }
  171.     
  172.     return err;
  173. }
  174.  
  175. ICError LaunchURL(OSType helper,Handle urlh){
  176.     ICError err;
  177.     AppleEvent theEvent;
  178.     
  179.     err=HaveProcessManager();
  180.     
  181.     if (err==noErr){
  182.         err=CreateGURLEvent(helper,urlh,&theEvent);
  183.         if (err==noErr)
  184.             err=SendEvent(&theEvent,helper);
  185.         AEDisposeDesc(&theEvent);
  186.     }
  187.     
  188.     return err;
  189. }
  190.  
  191. OSErr FSpGetCatInfo(FSSpecPtr fs,short index,CInfoPBRec* cpb){
  192.     HFileInfo* pb=&(cpb->hFileInfo);
  193.     
  194.     pb->ioVRefNum=fs->vRefNum;
  195.     pb->ioDirID=fs